package com.coderside.fragment.Collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 删除集合中的元素
 * @author 197370
 *
 */
public class DelCollectionElement {

	/**
	 * 官方文档说明：
	 * Iterator.remove是在遍历集合过程中删除元素的唯一安全的方法，当迭代正在进行时，使用别的方法改变集合会引发不确定的行为
	 * @param list
	 */
	public void iteratorRemove(List<String> list) {
		for (Iterator<String> it = list.iterator(); it.hasNext();) {
			String str = (String) it.next();
			if ("chengang".equals(str)) {
				it.remove();
			}
		}
	}

	/**
	 * 比较笨拙的写法
	 * 创建一个List专门存放要被删除的元素，循环过后，用List.removeAll方法把元素删除
	 * @param list
	 */
	public void newList(List<String> list) {
		List<String> removeList = new ArrayList<String>();
		for (Iterator<String> it = list.iterator(); it.hasNext();) {
			String str = (String) it.next();
			if ("chengang".equals(str)) {
				removeList.add(str);
			}
		}
		list.removeAll(removeList);
	}

	/**
	 * 顺序遍历array的时候如果删除了某个元素导致index偏移，可以每次remove后将index做前移处理
	 * @param list
	 */
	public void oodIndex(List<String> list) {
		for (int i = 0; i < list.size(); i++) {
			if (list.get(i).equals("c")) {
				list.remove(i);
				i--; //前移处理
			}
		}

	}
}
